Claudio Roberto

blog profissional com dicas de programação

Convertendo DataTable em List

Convertendo DataTable em List
  • Compartilhe esse post
  • Compartilhar no Facebook00
  • Compartilhar no Google Plus00
  • Compartilhar no Twitter

Como converter um DataTable em um List

Compartilho com vocês um extension que é para converter um DataTable em um List.

A função irá percorrer as propriedades de uma classe procurando se ela existe no datatable considerando seu nome ou a informação que está no 'DescriptionAttribute'.

public static List<T> ToListOf<T>(this DataTable dt)
{
const BindingFlags flags = BindingFlags.Public | BindingFlags.Instance;

//Pega o nome das colunas retornadas no DataTable
var columnNames = dt.Columns.Cast<DataColumn>().Select(c => c.ColumnName).ToList();

//Pega as propriedades da classe que será retornada no list
var objectProperties = typeof(T).GetProperties(flags);

var targetList = dt.AsEnumerable().Select(dataRow =>
{
//Cria uma intancia da classe a ser retornada
var instanceOfT = Activator.CreateInstance<T>();

//Percorre as propriedades
foreach (var properties in objectProperties)
{
//Nome de pesquisa da coluna no datatable se inicia com o nome da propriedade
var propertyName = properties.Name;

//Verifica se a propriedade possui um 'DescriptionAttribute' na qual é o nome da coluna no DataTable
var property = properties.GetCustomAttributes(typeof(DescriptionAttribute), true).FirstOrDefault();

//Caso encontre esse é o nome da coluna na qual será obtido o valor
if (property != null)
propertyName = ((DescriptionAttribute)property).Description;

//Somente faz atribuição caso tenha algum valor
if ((!columnNames.Contains(propertyName)) || (dataRow[propertyName] == DBNull.Value))
continue;

//Atribui o valor da coluna no objeto instanciado acima
properties.SetValue(instanceOfT, dataRow[propertyName], null);
}

return instanceOfT;

}).ToList();

return targetList;
}

Eu te vejo no próximo artigo.

  • Compartilhe esse post
  • Compartilhar no Facebook00
  • Compartilhar no Google Plus00
  • Compartilhar no Twitter

Veja Também:

Artigos Relacionados

Olá, deixe seu comentário para Convertendo DataTable em List

Enviando Comentário Fechar :/